/*
 * 定义用户相关的API接口函数
 *
 */

import request from '@/utils/request'
import { GET, POST } from '@/constant'

let API = {

  /**
   * 账号登录
   * @param account 账号
   * @param password 密码
   * @return {*|AxiosPromise}
   */
  userAccountLogin(account, password) {
    return request('/login', POST, {
      account,
      password
    })
  },
  /**
   * 获取手机号的短信验证码
   * @param mobile 手机号
   * @return {*|AxiosPromise}
   */
  userMobileLoginMsg(mobile) {
    return request('/login/code', GET, { mobile })
  },
  /**
   * 手机号登录
   * @param mobile  手机号
   * @param code    验证码
   */
  userMobileLogin(mobile, code) {
    return request('/login/code', POST, {
      mobile,
      code
    })
  },
  /**
   * 使用QQ登录
   * @param unionId QQ唯一标识, openId
   * @param source  来源 1 = pc
   * @return {*|AxiosPromise}
   */
  userQQLogin(unionId, source = 1) {
    return request('/login/social', POST, {
      unionId,
      source
    })
  },
  /**
   * 获取QQ绑定的时候短信验证码
   * @param mobile 手机号
   */
  userQQBindCode(mobile) {
    return request('/login/social/code', GET, { mobile })
  },
  /**
   * QQ登录绑定账号 (小兔鲜账号理论说应该和手机号绑定, 因为有一个扫码登录, 手机号码注册小兔鲜账号)
   * @param unionId   QQ唯一标识, openId
   * @param mobile    手机号
   * @param code      验证码
   * @return {*|AxiosPromise}
   */
  userQQBindLogin(unionId, mobile, code) {
    return request('/login/social/bind', POST, {
      unionId,
      mobile,
      code
    })
  },
  /**
   * 校验用户是否存在
   * @param account 账号
   * @return {*|AxiosPromise}
   */
  userAccountCheck(account) {
    return request('/register/check', GET, { account })
  },
  /**
   * 完善QQ账号信息, 发送短信(注册)
   * @param mobile 手机号
   */
  userQQPatchCode(mobile) {
    return request('/register/code', GET, { mobile })
  },
  /**
   * 完善QQ登录, 提供完善信息
   * @param unionId   QQ唯一标识, openId
   * @param account   账号
   * @param mobile    手机号
   * @param code      验证码
   * @param password  密码
   */
  userQQPatchLogin(unionId, account, mobile, code, password) {
    return request(`/login/social/${unionId}/complement`, POST, {
      account,
      mobile,
      code,
      password
    })
  }
}

export default API
